from django.db import models

# Create your models here.

# 订单表
class Order(models.Model):
    order_number = models.CharField(max_length=50)  # 订单编号
    passenger_id = models.BigIntegerField()  # 乘客ID
    driver_id = models.BigIntegerField(null=True)  # 司机ID
    start_address = models.CharField(max_length=50)  # 起点地址
    end_address = models.CharField(max_length=50)  # 终点地址
    # 新增：起点和终点坐标
    origin_lng = models.DecimalField(max_digits=10, decimal_places=6, null=True, blank=True)  # 起点经度
    origin_lat = models.DecimalField(max_digits=10, decimal_places=6, null=True, blank=True)  # 起点纬度
    destination_lng = models.DecimalField(max_digits=10, decimal_places=6, null=True, blank=True)  # 终点经度
    destination_lat = models.DecimalField(max_digits=10, decimal_places=6, null=True, blank=True)  # 终点纬度
    # 新增：路线规划信息
    route_distance = models.IntegerField(null=True, blank=True)  # 路线距离（米）
    route_duration = models.IntegerField(null=True, blank=True)  # 预计时长（秒）
    route_polyline = models.TextField(null=True, blank=True)  # 路线轨迹（用于地图显示）
    order_status = models.SmallIntegerField(default=0)  # 订单状态 0 待接单 1 已上车 2 已到达 3 待支付 4 已支付 5 已取消 6 待评价 7 已评价
    order_amount = models.DecimalField(max_digits=10, decimal_places=2)  # 订单金额
    create_time = models.DateTimeField(auto_now_add= True)  # 创建时间
    start_time = models.DateTimeField(null=True, blank=True)  # 开始时间
    end_time = models.DateTimeField(null=True, blank=True)  # 结束时间

# 订单状态日志表
class OrderStatusLog(models.Model):
    order = models.ForeignKey(Order, on_delete=models.CASCADE, related_name='status_logs')  # 订单ID
    status = models.SmallIntegerField()  # 状态值 0 待接单 乘客 1 已上车 司机 2 已到达 司机 3 待支付 司机 4 已支付 乘客 5 已取消 乘客 6 待评价 系统 7 已评价 系统
    operator_type = models.SmallIntegerField()  # 操作类型(0-系统,1-乘客,2-司机)
    operator_id = models.BigIntegerField()  # 操作人ID
    create_time = models.DateTimeField()  # 创建时间
    remark = models.CharField(max_length=255, null=True, blank=True)  # 备注

# 订单支付记录表
class OrderPayment(models.Model):
    order = models.ForeignKey(Order, on_delete=models.CASCADE, related_name='payments')  # 订单ID（关联订单表）
    payment_no = models.CharField(max_length=50)  # 支付单号
    payment_time = models.DateTimeField(null=True)  # 支付时间
    amount = models.DecimalField(max_digits=10, decimal_places=2)  # 支付金额
    payment_method = models.SmallIntegerField(default=0)  # 支付方式(0-支付宝)
    status = models.SmallIntegerField(default=0)  # 支付状态(0-未支付,1-已支付,2-退款中,3-已退款)
    created_at = models.DateTimeField(auto_now_add= True)  # 创建时间
    updated_at = models.DateTimeField(auto_now= True)  # 更新时间

# 订单评价表
class OrderRating(models.Model):
    order = models.ForeignKey(Order, on_delete=models.CASCADE, related_name='ratings')  # 订单ID（关联订单表）
    passenger_id = models.BigIntegerField()  # 乘客ID
    driver_id = models.BigIntegerField()  # 司机ID
    rating = models.SmallIntegerField()  # 评分(1-很差,2-差,3-一般,4-好,5-很好)
    comment = models.TextField(null=True, blank=True)  # 评价内容
    image_url = models.URLField(max_length=500, null=True, blank=True)  # 评论图片URL（七牛云）
    rating_time = models.DateTimeField(auto_now_add= True)  # 评价时间
    # 新增审核相关字段
    audit_status = models.SmallIntegerField(default=0)  # 审核状态(0-待审核,1-审核通过,2-审核拒绝)
    audit_time = models.DateTimeField(null=True, blank=True)  # 审核时间
    audit_result = models.TextField(null=True, blank=True)  # 审核结果说明
    is_sensitive = models.BooleanField(default=False)  # 是否包含敏感内容

# 评论审核日志表
class CommentAuditLog(models.Model):
    comment_id = models.CharField(max_length=50)  # 评论ID（MongoDB中的ID）
    order_id = models.BigIntegerField()  # 订单ID
    passenger_id = models.BigIntegerField()  # 乘客ID
    driver_id = models.BigIntegerField()  # 司机ID
    original_comment = models.TextField()  # 原始评论内容
    audit_status = models.SmallIntegerField()  # 审核状态(0-待审核,1-审核通过,2-审核拒绝)
    audit_time = models.DateTimeField(auto_now_add=True)  # 审核时间
    audit_result = models.TextField(null=True, blank=True)  # 审核结果说明
    sensitive_words = models.TextField(null=True, blank=True)  # 检测到的敏感词
    audit_method = models.CharField(max_length=20, default='langchain')  # 审核方式(langchain/baidu)
    processing_time = models.FloatField(null=True, blank=True)  # 处理耗时（秒）


# 订单投诉表
class OrderComplaint(models.Model):
    order = models.ForeignKey(Order, on_delete=models.CASCADE, related_name='complaints')  # 订单ID（关联订单表）
    complainant_id = models.BigIntegerField()  # 投诉人ID
    defendant_id = models.BigIntegerField()  # 被投诉人ID
    content = models.TextField()  # 投诉内容
    complaint_time = models.DateTimeField(auto_now_add= True)  # 投诉时间
    status = models.SmallIntegerField(default=0)  # 处理状态(0-待处理,1-处理中,2-已解决)
    handler_id = models.BigIntegerField(null=True, blank=True)  # 处理人ID（关联系统用户角色表）
    result = models.TextField(null=True, blank=True)  # 处理结果
    created_at = models.DateTimeField(auto_now_add= True)  # 创建时间
    updated_at = models.DateTimeField(auto_now= True)  # 更新时间

# 订单额外费用表
class OrderExtraFee(models.Model):
    order = models.ForeignKey(Order, on_delete=models.CASCADE, related_name='extra_fees')  # 订单ID（关联订单表）
    fee_type = models.CharField(max_length=50)  # 费用类型（高速费/停车费/附加费）
    amount = models.DecimalField(max_digits=10, decimal_places=2)  # 金额
    description = models.CharField(max_length=255, null=True, blank=True)  # 描述
    create_time = models.DateTimeField(auto_now_add= True)  # 创建时间
